/* T7_14_1  数组里的鞍点
若n行m列的二维数组中某元素在行中最大,而在列上最小,则称该元素为二维数组中的鞍点.
编写子函数f,在f函数里输入二维矩阵的大小n和m(m,n均小于20),并依次输入这n*m个元素的值,
按照每行一个的方式列出矩阵中鞍点的位置以及鞍点的值.

输入输出样例：
5 5
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 2
15 10 11 20 25
result:
3 0 8

// a[3][0]=8为鞍点

程序的主要框架已经给出，请仅在
**********  Begin  **********

**********   End  ***********
注意:
1、注释对之间的空行中添加你的代码，任何修改该两行注释，以及修改注释外代码均将被判失败。
2、f函数中的必要的变量已经定义好,请仅使用这些变量,不得定义和使用新的变量.任何新定义变量的代码均将被判失败。
3、请注意必要的输入输出格式。
*/
#include <stdio.h>
#define N 20
#define M 20
void f()
{
    int a[N][M], n, m, i, j, k, loc;
    scanf("%d%d", &n, &m);
    for (i = 0; i < n; i++)
        for (j = 0; j < m; j++)
            scanf("%d", &a[i][j]);
    /**********  Begin  **********/
    for (i = 0; i < n; i++) // 行
    {
        loc = 0;                // 列
        for (j = 1; j < m; j++) // 找出行中最大的
        {
            if (a[i][j] > a[i][loc]) // 找出行中最大的
                loc = j;             // 记录列
        }
        for (k = 0; k < n; k++) // 找出列中最小的
        {
            if (a[k][loc] < a[i][loc]) // 找出列中最小的
                break;
        }
        if (k == n)                                  // 如果找到了
            printf("%d %d %d\n", i, loc, a[i][loc]); // 输出
    }
    /**********   End  ***********/
}
int main()
{
    f();
    return 0;
}
